package com.tuyrt.firstcode.kotlin.generics

/**
 * Created by tuyrt7 on 2021/4/12.
 * 泛型-逆变 in：  泛型类MyClass<T>，其中 A是B 的子类型，MyClass<B> 是MyClass<A> 的子类型，则称 MyClass<T> 在
 *  泛型 T 上是逆变的
 *  Kotlin API  Comparable 接口 使用逆变
 */

interface Transformer<in T>{
    fun transform(t:T):String
}

fun handleTransform(trans: Transformer<Student>) {
    val student = Student("Jack", 19)
    val transform = trans.transform(student)
}

fun main() {
    val trans = object :Transformer<Person>{
        override fun transform(t: Person): String {
           return "${t.name} x ${t.age}"
        }
    }
    handleTransform(trans)
}